<?php
namespace app\service\MessageParser;

/**
 * MQTT消息解析接口
 * 定义所有消息解析器必须实现的方法
 */
interface MessageParserInterface
{
    /**
     * 解析接收到的MQTT消息
     * 
     * @param string $topic MQTT主题
     * @param array $messageData 消息数据（已JSON解码）
     * @param string $deviceId 设备标识（可选，用于辅助解析）
     * @return array|null 解析后的数据，格式为数据库保存格式，失败返回null
     */
    public function parse(string $topic, array $messageData, string $deviceId = ''): ?array;

    /**
     * 判断是否能处理该消息
     * 用于在多个解析器中选择合适的处理器
     * 
     * @param string $topic MQTT主题
     * @param array $messageData 消息数据
     * @return bool 是否能处理
     */
    public function canHandle(string $topic, array $messageData): bool;

    /**
     * 获取解析器名称
     * 
     * @return string 解析器名称
     */
    public function getName(): string;

    /**
     * 获取解析器版本
     * 
     * @return string 解析器版本
     */
    public function getVersion(): string;
}

